bool GetModulationStr(DWORD mod, char* lpResult, int ResSize)
{
	switch(mod)
	{
	case MOD_DVBS_QPSK:
		StringCbCopy(lpResult, ResSize, "DVB-S/QPSK");
		break;
	case MOD_DVBS_8PSK:
		StringCbCopy(lpResult, ResSize, "DVB-S2/8PSK");
		break;
	case MOD_DVBS_16APSK:
		StringCbCopy(lpResult, ResSize, "DVB-S2/16APSK");
		break;
	case MOD_DVBS_32APSK:
		StringCbCopy(lpResult, ResSize, "DVB-S2/32APSK");
		break;
	case MOD_TURBO_QPSK:
		StringCbCopy(lpResult, ResSize, "Turbo/8PSK");
		break;
	case MOD_TURBO_8PSK:
		StringCbCopy(lpResult, ResSize, "Turbo/QPSK");
		break;
	case MOD_DVBS_NBC_QPSK:
		StringCbCopy(lpResult, ResSize, "DVB-S2/QPSK");
		break;
	default:
		StringCbCopy(lpResult, ResSize, "");		
		break;
	}

	return true;
}

DWORD ModulationStr2i(char* modstr)
{
	DWORD result=MOD_DVBS_QPSK;

	if (!lstrcmpi(modstr,"DVB-S/QPSK"))
		result=MOD_DVBS_QPSK;
	else if (!lstrcmpi(modstr,"DVB-S2/QPSK"))
		result=MOD_DVBS_NBC_QPSK;
	else if (!lstrcmpi(modstr,"DVB-S2/8PSK"))
		result=MOD_DVBS_8PSK;
	else if (!lstrcmpi(modstr,"DVB-S2/16APSK"))
		result=MOD_DVBS_16APSK;
	else if (!lstrcmpi(modstr,"DVB-S2/32APSK"))
		result=MOD_DVBS_32APSK;
		
	return result;
}

DWORD StrToFec(char* str)
{
	DWORD result = 0;

	if (!lstrcmpi(str,"auto"))
		result = 0;
	else if (!lstrcmpi(str,"1/2"))
		result = 0x12;
	else if (!lstrcmpi(str,"1/3"))
	    result = 0x13;
	else if (!lstrcmpi(str,"1/4"))
	    result = 0x14;
	else if (!lstrcmpi(str,"2/3"))
	    result = 0x23;
	else if (!lstrcmpi(str,"2/5"))
	    result = 0x25;
	else if (!lstrcmpi(str,"3/4"))
	    result = 0x34;
	else if (!lstrcmpi(str,"3/5"))
	    result = 0x35;
	else if (!lstrcmpi(str,"4/5"))
	    result = 0x45;
	else if (!lstrcmpi(str,"5/6"))
	    result = 0x56;
	else if (!lstrcmpi(str,"7/8"))
	    result = 0x78;
	else if (!lstrcmpi(str,"8/9"))
	    result = 0x89;
	else if (!lstrcmpi(str,"9/10"))
	    result = 0x9A;

	return result;
}
